package com.softer.wxzj.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.common.util.StringUtils;
import com.softer.wxzj.entity.BaseRegionInfo;
import com.softer.wxzj.entity.OrgRegion;
import com.softer.wxzj.mapper.OrgRegionMapper;
import com.softer.wxzj.service.OrgRegionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2020/5/28
 */
@Service
public class OrgRegionServiceImpl implements OrgRegionService {
    @Autowired
    private OrgRegionMapper orgRegionMapper;


    /**
     * 新增绑定小区
     *
     * @param orgRegion 绑定信息
     * @return 新增结果
     */
    @Override
    public CommonResult addOrgRegion(OrgRegion orgRegion) {
        String id = orgRegionMapper.getOrgRegionId(orgRegion);
        if (StringUtils.isNotEmpty(id)) {
            return CommonResult.ResponseResult(0, "您已绑定过这个小区，请核实后再添加");
        }
        orgRegion.setCreater(orgRegion.getOperNo());
        int num = orgRegionMapper.addOrgRegion(orgRegion);
        return CommonResult.ResponseResult(num);
    }

    /**
     * 删除绑定小区
     *
     * @param id 绑定ID
     * @return 删除结果
     */
    @Override
    public CommonResult deleteOrgRegion(String id) {
        int num = orgRegionMapper.deleteOrgRegion(id);
        return CommonResult.ResponseResult(num);
    }

    /**
     * 查询物业绑定的小区列表
     *
     * @param page           分页信息
     * @param baseRegionInfo 查询实体
     * @return 小区列表
     */
    @Override
    public PageInfo<BaseRegionInfo> getOrgRegionList(Page page, BaseRegionInfo baseRegionInfo) {
        PageHelper.startPage(page.getPageNum(), page.getPageSize());
        List<BaseRegionInfo> list = orgRegionMapper.getOrgRegionList(baseRegionInfo);
        return new PageInfo<>(list);
    }

    /**
     * 新增管辖小区时的查询列表
     *
     * @param regionName 小区名称
     * @param zoneCode   所在区域
     * @return 小区列表
     */
    @Override
    public List<BaseRegionInfo> getRegionList(String regionName, String zoneCode) {
        return orgRegionMapper.getRegionList(regionName, zoneCode);
    }

    /**
     * 查询物业绑定的所有小区列表
     * （用于下拉菜单）
     *
     * @param operNo 登录账号
     * @return 小区列表
     */
    @Override
    public List<BaseRegionInfo> getAllRegion(String operNo) {
        BaseRegionInfo baseRegionInfo = new BaseRegionInfo();
        baseRegionInfo.setOperNo(operNo);
        return orgRegionMapper.getOrgRegionList(baseRegionInfo);
    }
}
